package com.mdd.common.util;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Locale;

/**
 * 金额工具类
 * @author shenjian
 * @createTime 2023年02月14日 15:47:00
 */
public class AmountUtils {

    /**
     * 分转元(除以100)四舍五入，保留2位小数
     * @param amount 金额 分
     * @return
     */
    public static Double changeF2YV1(Integer amount){
        if (amount == null) {
            return null;
        }
        // 创建一个百分比化对象
        NumberFormat numberFormat = NumberFormat.getCurrencyInstance(Locale.CHINA);
        // 设置精确到小数点后2位
        numberFormat.setMaximumFractionDigits(2);
        numberFormat.setMinimumFractionDigits(2);
        String format = numberFormat.format(BigDecimal.valueOf(amount).divide(BigDecimal.valueOf(100))).replace("¥","").replace(",","");
        return Double.valueOf(format);
    }

    public static Double changeF2Y(Integer amount){
        if(amount == null){
            return null;
        }
        return new BigDecimal(amount).divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP).doubleValue();
    }

    public static void main(String[] args) {
        Integer  amount = 1392;

        System.out.println(changeF2Y(amount));
    }

    /**
     * 元转分(乘以100)
     * @param amount 金额 分(支持大数字，16位以上)
     * @return
     */
    public static Integer changeY2F(Double amount){
        if (amount == null) {
            return null;
        }
        DecimalFormat df = new DecimalFormat("#.00");
        amount = Double.valueOf(df.format(amount));
        return (int) (amount * 100);
    }
}
